/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.estoque.Produtos;

import br.com.estoque.AcessoBanco.AcessoMysql;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author note
 */
public class ProdutoDAO {
    
    PreparedStatement pstm;
    ResultSet rs;
    AcessoMysql mysql = new AcessoMysql();
    
    public ProdutoDAO(){}
    
    private void cadastrarProduto(Produto produto) throws SQLException{
       String cadastraProduto = "insert into produtos (CODIGO, NOME, VALOR, ESTOQUE, CODIGO_FORNECEDOR)"
               + "VALUES(?,?,?,?,?)";
       
       //prepara a conexão
            pstm = mysql.conectar().prepareStatement(cadastraProduto);
       //seta os valores
            pstm.setLong(1,produto.getCodigo());
            pstm.setString(2,produto.getNome());
            pstm.setDouble(3,produto.getValor());
            pstm.setInt(4, produto.getQuantidade());
            pstm.setLong(5, produto.getCodigo_fornecedor());
            
       //executa o código sql
            pstm.executeUpdate();
            mysql.desconectar();      
    }
    
    private List<Produto> listarProdutos(String nome) throws SQLException{
        List<Produto> produtos = new ArrayList<Produto>();
        String consultaProduto = "select * from produtos where nome like ?";
        
        
        pstm = mysql.conectar().prepareStatement(consultaProduto);
        pstm.setString(1, nome);
        rs = pstm.executeQuery();
        
        while(rs.next()){
            Produto produto = new Produto();
            produto.setCodigo(Long.valueOf(rs.getString("codigo")));
            produto.setNome(rs.getString("nome"));
            produto.setValor(rs.getDouble("valor"));
            produto.setQuantidade(rs.getInt("estoque"));
            produto.setCodigo_fornecedor(Long.valueOf(rs.getString("codigo_fornecedor")));
            produtos.add(produto);
        }
        mysql.desconectar();
        
        return produtos;
    }
    
    private void alterarProduto(Produto produto) throws SQLException{
        String alteraProduto = "update produtos set nome=?, valor=?, estoque=?, codigo_fornecedor=? where codigo=?";
        //prepara a conexão
        pstm = mysql.conectar().prepareStatement(alteraProduto);
        
        //seta os valores no banco
        pstm.setString(2,produto.getNome());
        pstm.setDouble(3,produto.getValor());
        pstm.setInt(4, produto.getQuantidade());
        pstm.setLong(5, produto.getCodigo_fornecedor());
        
        //executa o codigo sql
        pstm.executeUpdate();
        mysql.desconectar();
        
    }
    
    public void deletaProduto(Produto produto) throws SQLException{
        String deletar = "delete from produtos where codigo=?";
        
        pstm = mysql.conectar().prepareStatement(deletar);
        pstm.setLong(1, produto.getCodigo());
        pstm.executeUpdate();
        mysql.desconectar();
    }
}
